package routers

import (
	"github.com/gin-gonic/gin"
	"go-0650-blog-grom/logger"
	"net/http"
)

/**
 * @Author sswang
 * @Description //TODO 设置路由
 * @Date 15:07 2022/10/27
 **/
func SetupRouter(mode string) *gin.Engine {
	if mode == gin.ReleaseMode {
		gin.SetMode(gin.ReleaseMode) // 设置成发布模式
	}

	// 下面这种方式创建的默认路由会自带两个中间件: Logger(), Recovery()
	// r := gin.Default()
	// 如果不想要默认自带的中间件, 使用下面的方式: gin.New() 创建默认路由
	r := gin.New()
	// 全局中间件
	r.Use(logger.GinLogger(), logger.GinRecovery(true))

	// 加载静态文件
	r.LoadHTMLFiles("templates/index.html") // 加载html
	r.GET("/", func(context *gin.Context) {
		context.HTML(http.StatusOK, "index.html", nil)
	})

	// swagger 暂时未配置。Swagger 是一个规范和完整的框架，用于生成、描述、调用和可视化 RESTful 风格的 Web 服务
	// r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

	// 用户模块 router
	UserRoutersInit(r)

	// 帖子模块 router
	PostRouterInit(r)

	// 社区模块 router
	CommunityRouter(r)

	return r
}
